package state.general;

/**
 * @Author：LJ
 * @Description：环境角色，定义客户端的接口并负责具体专题的切换
 * 该角色有两个不成文的规定：
 * 1.把状态对象声明为静态对象,有几个状态对象就声明九个静态常量
 * 2.环境角色具有抽象状态角色定义的所有行为,具体执行使用委托方式交给当前状态对应的方法
 * @Date: 2017/12/3
 * @Modified By:
 */
public class Context {
    public final static ConcreteState1 STATE1 = new ConcreteState1();
    public final static ConcreteState2 STATE2 = new ConcreteState2();

    private State currentState;

    public State getCurrentState() {
        return currentState;
    }

    public void setCurrentState(State currentState) {
        this.currentState = currentState;
        this.currentState.setContext(this);
    }

    public void method1() {
        this.currentState.method1();
    }

    public void method2() {
        this.currentState.method2();
    }
}
